package top.kaoshanji.p1ch12d;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

/**
 * 代码清单-p1ch12d-131页d：动态代理类
 * 工具类，通过动态代理创建对象
 * @author kaoshanji
 * ^_^
 * create time 2025/3/22 18:52
 */
public class DynamicProxy<T> {

    public static <T> T newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) {

        // 这个逻辑不应该在这里吧....
        // 寻找 JoinPoint 连接点，AOP框架使用元数据定义
        if (true) {
            // 执行一个前置通知
            (new BeforeAdvice()).exec();
        }

        // 执行目标，并返回结果
        return (T) Proxy.newProxyInstance(loader, interfaces, h);

    }





}
